#include <iostream>
using namespace std;

const int N = 1e5 + 5;
int arr[N];

int main(){
    int n;
    cin>>n;
    for(int i = 0; i < n; i++)
        scanf("%d", arr + i);
    /*
    思路：第一个和最后一个不是山峰
    当值从左到右非递减时，认为在攀升
    当攀升时下降了，则是一个山峰
    */
    int res = 0;
    int flag = 0; //1表示在攀升
    for(int i = 1; i < n - 1; i++)
        if(arr[i-1] <= arr[i] && !flag){ //在攀升
            flag = 1;
        }else if(flag){ //下降了
            res++;
            flag = 0;//置零
        }
    cout<<res;
    return 0;
}

/*

mokit
题目描述
给定一个数值序列，如果其中包含一个子序列，其左半部分构成一个非递减序列（即相邻两个数值，左边数值<=右边数值），

右半部分构成一个非递增序列，我们称这个序列构成一个数值山峰，如果我们用数值的下表作为x值，

数值大小作为y值绘制折线图能够更清楚表明这一点。现给定一个数值序列，计算其中完整的山峰的个数。

如果不存在山峰，输出0.

输入说明
第一行一个整数n(3<=n<=100000)表示序列的长度。第二行包含n个空格隔开的整数表示序列。

输出说明
仅一行，输出一个整数，表示山峰的个数。

输入样例
12

3 1 2 2 4 3 1 1 5 7 3 5

输出样例
2

*/